<?php

declare(strict_types=1);

namespace app\api;

use app\admin\BaseXpController;
use app\api\middleware\Auth;
use think\facade\Request;

/**
 * 基础APP API控制器
 * 需要登录才能访问的控制器，继承该类即可
 */
abstract class BaseApiController extends BaseXpController
{

    /**
     * 当前登录用户信息
     */
    public $user = null;

    /**
     * 请求数据, $_POST RAW 数据
     * @var array
     */
    public $data = [];

    /**
     * 初始化
     */
    public function initialize()
    {
        parent::initialize();
        // 中间件
        $this->middleware = [Auth::class];
        // 登录信息
        $this->initUser();
        // 请求数据
        $this->input();
    }

    /**
     * 验证登录信息
     */
    protected function initUser()
    {
        $auth = new Auth;
        $user = $auth->check();
        if ($user) {
            define('UID', $user->id);
            define('USERNAME', $user->nickname);
            define('USER', $user);
            $this->user = $user;
            // 读取数据权限
            $this->dataScope();
        }
    }

    /**
     * 读取请求数据, 当 $_POST 获取不到时请使用该方法
     */
    protected function input()
    {
        $content = Request::getContent();
        $arr = json_decode($content, true);
        $new = [];
        if ($arr){
            foreach ($arr as $key => $value){
                if (is_string($value)){
                    $value = htmlspecialchars(trim($value));
                }
                $new[$key] = $value;
            }
        }
        $this->data = $new;
    }
}
